<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<body>
  <script>
    /*
      bind() 是函数的方法，可以用来创建一个新的函数
        -- bind可以为新函数绑定this
        -- bind可以为新函数，绑定参数

      箭头函数没有自身的this, 所以无法通过call, apply, bind 修改它的this

      箭头函数中，也没有arguments
    */

    function fn(a, b, c) {
      console.log('fn执行了, this---->', this)
      console.log(a, b, c)
    }
    const obj = {name: '孙悟空', age: 18}
    const newFn = fn.bind()
    newFn() // this指向window

    const newFn2 = fn.bind(obj, 10, 20, 30)
    newFn2(1,2,3) // this指向obj  参数打印结果是 10 20 30 而不是1 2 3

    const arrowFn = (a,b,c) => {
      console.log('我是箭头函数中的this', this) // window
      console.log('我是箭头函数中的实参', a, b, c) // 10 20 30

    }
    const newArrowFn = arrowFn.bind(obj, 10, 20, 30)
    newArrowFn(1,2,3)
  </script>
</body>
</html>